package cn.xingzhe.monster.user.domain.repository;

import cn.xingzhe.monster.user.domain.model.CaptchaModel;
import cn.xingzhe.monster.user.domain.enums.CaptchaTypeEnum;

import java.util.Optional;

/**
 * 验证码仓储接口
 * 操作领域模型 CaptchaModel
 *
 * @author System
 * @version 1.0.0
 * @since 2024-01-01
 */
public interface CaptchaRepository {

    /**
     * 根据key和type查询验证码
     *
     * @param key  键（手机号或邮箱）
     * @param type 验证码类型
     * @return 验证码领域模型
     */
    Optional<CaptchaModel> findByKeyAndType(String key, CaptchaTypeEnum type);

    /**
     * 保存验证码
     *
     * @param captcha 验证码领域模型
     * @return 保存后的验证码领域模型
     */
    CaptchaModel save(CaptchaModel captcha);

    /**
     * 根据key和type删除验证码
     *
     * @param key  键（手机号或邮箱）
     * @param type 验证码类型
     */
    void deleteByKeyAndType(String key, CaptchaTypeEnum type);

    /**
     * 删除过期验证码
     */
    void deleteExpiredCaptchas();
}

